package com.hakim.wfb.dao;

import com.hakim.wfb.bean.ConsumeRecord;
import com.hakim.wfb.customer.params.trans.ConsumeRecordParameter;
import com.hakim.wfb.customer.params.trans.GetConsumeRecordParameter;
import com.hakim.wfb.customer.params.trans.GetTeamConsumeRecordParameter;
import com.hakim.wfb.customer.result.trans.ConsumeRecordView;
import com.hakim.wfb.customer.result.trans.CreditPointView;
import com.hakim.wfb.customer.result.trans.TeamConsumeRecordView;
import com.hkfs.fundamental.api.data.ListResultEx;
import com.hkfs.fundamental.database.PageDaoBase;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

@Repository
public interface ConsumeRecordDao extends PageDaoBase<ConsumeRecord, String> {

    int countInvestTimes(ConsumeRecordParameter param);

    int countInvestTimesByUserId(String userId);

    List<ConsumeRecord> getFinishedConsumeRecords(GetConsumeRecordParameter param);

    /**
     * 完成投资记录数
     *
     * @param param
     * @return
     */
    int getFinishedConsumeRecordCount(GetConsumeRecordParameter param);

    /**
     * 进行中投资记录
     *
     * @param param
     * @return
     */
    List<ConsumeRecord> getRunningConsumeRecords(GetConsumeRecordParameter param);

    /**
     * 进行中投资记录数
     *
     * @param param
     * @return
     */
    int getRunningConsumeRecordCount(GetConsumeRecordParameter param);

    /**
     * 所有投资
     *
     * @param param
     * @return
     */
    List<ConsumeRecordView> getAllInvest(ConsumeRecordParameter param);

    /**
     * 所有进行中投资记录
     *
     * @return
     */
    List<ConsumeRecord> getAllRunningConsumeRecords();

    /**
     * @param parameter
     * @return
     */
    List<ConsumeRecord> getUserConsumeRecords(GetConsumeRecordParameter parameter);

    /**
     * @param parameter
     * @return
     */
    int getUserConsumeRecordsCount(GetConsumeRecordParameter parameter);

    /**
     * @param param
     * @return
     */
    List<TeamConsumeRecordView> getTeamConsumeRecords(GetTeamConsumeRecordParameter param);

    /**
     * @param parameter
     * @return
     */
    int getTeamConsumeRecordsCount(GetTeamConsumeRecordParameter parameter);

    /**
     * 用户投资中总额
     *
     * @param userId
     * @return
     */
    BigDecimal getUserInvestingAmount(@Param("userId") String userId);

    /**
     * 团队投资中总额
     *
     * @param userOrg
     * @return
     */
    BigDecimal getTeamInvestingAmount(@Param("userOrg") String userOrg);


}
